<?
/**
 * 公共函数，处理一些公共的东西
 * @copyright Copyright (c) 2007-2008 sdmblog (http://www.sdmblog.cn)
 * @author sdomain(sdomain@live.cn)
 * @version func.lib.php Sat Jan 05 17:47:33 CST 2008 php $ 
**/
if(!defined('SDOMAIN')) die('Error to get this file!');


/**
 * 可逆的加密与解密(通常用来加密Cookie或者系统间通信数据)
 *
 * @param 字符串 $string 需要加密或解密的字符串
 * @param 常量 $operation ENCODE(加密) 或 DECODE(解密)
 * @param 字符串 $key 密钥
 * @return 加密或解密后的字符串$string
 * 
 * 范例：
 * $secretid = '3qVBXWwHHh4dtNv';
 * $sp_auth_key = md5($secretid.$_SERVER['HTTP_USER_AGENT']);
 * echo '加密:'.authcode('测试，好不好用啊...', 'ENCODE');
 * echo '<hr /> 解密:'.authcode('','DECODE');
 */

function authcode($string, $operation, $key = '') {
	$key = md5($key ? $key : $GLOBALS['$secret_id']);
	$key_length = strlen($key);
	$string = $operation == 'DECODE' ? base64_decode($string) : substr(md5($string.$key), 0, 8).$string;
	$string_length = strlen($string);
	$rndkey = $box = array();
	$result = '';
	for($i = 0; $i <= 255; $i++) {
		$rndkey[$i] = ord($key[$i % $key_length]);
		$box[$i] = $i;
	}
	for($j = $i = 0; $i < 256; $i++) {
		$j = ($j + $box[$i] + $rndkey[$i]) % 256;
		$tmp = $box[$i];
		$box[$i] = $box[$j];
		$box[$j] = $tmp;
	}
	for($a = $j = $i = 0; $i < $string_length; $i++) {
		$a = ($a + 1) % 256;
		$j = ($j + $box[$a]) % 256;
		$tmp = $box[$a];
		$box[$a] = $box[$j];
		$box[$j] = $tmp;
		$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
	}
	if($operation == 'DECODE') {
		if(substr($result, 0, 8) == substr(md5(substr($result, 8).$key), 0, 8)) {
			return substr($result, 8);
		} else {
			return '';
		}
	} else {
		return str_replace('=', '', base64_encode($result));
	}
}

/**
 * 创建或删除Cookie(服务器时间和客户端时间不一致时候好象会有问题)
 * 
 * @param 字符串 $name Cookie变量名
 * @param 字符串 $value Cookie变量值, 为空则删除Cookie
 * @param 整型 $time Cookie变量生存时间, 为 0 将会在会话结束后(一般是浏览器关闭)失效, 为负时直接删掉
 * @param 布尔型 $force 是否进行加密, 默认加密存储
 */
function mkcookie ($name, $value='', $time=0, $force = TRUE) {
	global $cookiepre, $cookiedomain, $cookiepath;
	//throw new Exception('value:'.$value);
	if ($force) $value = authcode($value, ENCODE);
	$time = $time > 0 ? time() + $time : (empty($value) ? time() -86400 * 365 : 0);
	
	setcookie($cookiepre.$name, $value, $time, $cookiepath, $cookiedomain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0);
}
/**
 * 获取系统参数信息
 *
 * @param string $name 参数名称
 * @return mix	参数值
 */
function GP($name){
	global $tablepre;
	global $lang;
	global $db;
	$sql = 'select * from '.$tablepre.'sysparametes where name="'.$name.'"';
	$db->query($sql);
	if($db->numRows==0){
		//throw new Exception($lang[WEB_ERROR_0002]);
		//如果没有此属性，返回空
		return '';
	}
	$array = $db->db_fetch_array();
	return stripslashes($array['data']);
}

/**
 * 设置系统参数
 *
 * @param string $name 要设置的参数名称
 * @param mix $value 要设置的值
 */
function SP($name,$value,$memo='')
{
	global $tablepre;
	global $db;
	$value = addslashes($value);
	$sql = 'select `data` from '.$tablepre.'sysparametes where `name` = \''.$name.'\'';
	$db->query($sql);
	if ($db->numRows>0) {
		$sql = 'update '.$tablepre.'sysparametes set `data` = "'.$value.'" where `name`=\''.$name.'\'';
	}else {
		if ($memo=='') {
			$sql = 'insert into '.$tablepre.'sysparametes (`id`,`name`,`data`) values(NULL,\''.$name.'\',\''.$value.'\')';
		}else {
			$sql = 'insert into '.$tablepre.'sysparametes (`id`,`name`,`data`,`memo`) values(NULL,\''.$name.'\',\''.$value.'\',\''.$memo.'\')';
		}
	}
	$db->query($sql);
}

/**
 * 判断是否登录（用户级）从COOKIE里判断：uid-uname-logintime-groupid-right-md5（）
 *
 * @return array 保存用户信息的数组
 */
function islogin()
{
	global $cookiepre;
	global $secret_id,$logintimeout;
	$usercookie = $_COOKIE[$cookiepre.'userinfo'];
	$usercookie = authcode($usercookie,'DECODE');
	$userinfo = explode("-",$usercookie);
	//var_dump($userinfo);
	if (!is_array($userinfo)||empty($userinfo)) {
		return 0;
	}
	if ($userinfo[5]!=md5($userinfo[0].$userinfo[1].$userinfo[2].$userinfo[3].$userinfo[4].$secret_id)) {
		mkcookie('userinfo','');
		return 0;
	}
	$time = time();
	if($logintimeout>0){
		if(($time - $userinfo[2])>$logintimeout){
			mkcookie('userinfo','');
			return 0;
		}
	}
	$userinfo[2] = $time;
	$userinfo[5] = md5($userinfo[0].$userinfo[1].$userinfo[2].$userinfo[3].$userinfo[4].$secret_id);
	$str=implode("-",$userinfo);
	mkcookie("userinfo",$str);
	return $userinfo;
}
function logout()
{
	mkcookie('userinfo','');
}
/**
 * 根据当前页和总页数显示分页信息及连接
 *
 * @param string $file 处理的页面文件名称
 * @param int $page 当前的页数
 * @param int $pageCount 总页数
 * @param string $condition 条件名称字符串，中间以“，”隔开
 * @param string $content 条件内容字符串 要与条件名称字符串相批配，中间以“，”隔开
 * @param int $style 分页样式，日后可以根据此样式增加不同的分页形式
 * @param boolean $ajax 是否是AJAX分页
 * @param string $ajaxname 如果是AJAX分页，则指定AJAX的执行函数名称
 * @return string 反回分页的信息如 （首页 1 尾页）
 */
function pageinfo($file,$page,$pageCount,$condition,$content,$style,$ajax=false,$ajaxname='')
{
	global $lang;
	$arrcond = explode(',',$condition);
	$arrcont = explode(',',$content);

	if (count($arrcond)!=count($arrcont)) {
		//如果查出来的参数不配对，则无法进行查询
		throw new Exception('参数不配对，无法进行查询');
	}
	foreach ($arrcond as $keycond=>$contcond) {
		switch ($contcond) {
			case 'category':
				$param = empty($param)?('C='.$arrcont[$keycond]):('&C='.$arrcont[$keycond]);
				$ajaxpar1 = empty($ajaxpar1)?'category':($ajaxpar1.',category');
				break;
			case 'date':
				$param = empty($param)?('D='.$arrcont[$keycond]):('&D='.$arrcont[$keycond]);
				$ajaxpar1 = empty($ajaxpar1)?'date':($ajaxpar1.',date');
				break;
			default:
				break;
		}
		$ajaxpar2 = empty($ajaxpar2)?$arrcont[$keycond]:($ajaxpar2.','.$arrcont[$keycond]);
	}
	
	$ajaxpar = '\''.$ajaxpar1.'\',\''.$ajaxpar2.'\'';
	switch ($style){
		case 1:
			$page=$page==0?1:$page;
			$pageCount=$pageCount==0?1:$pageCount;
			$temp=$param==''?'?'.$param.'&':'?';
			$firstPage = $ajax?'<a href="#" onclick="'.$ajaxname.'(1,'.$ajaxpar.')">'.$lang['INDEXPAGE'].'</a>':'<a href="'.$file.$temp.'P=1">'.$lang['INDEXPAGE'].'</a>';
			$lastPage = $ajax?'<a href="#" onclick="'.$ajaxname.'('.$pageCount.','.$ajaxpar.')">'.$lang['LASTPAGE'].'</a>':'<a href="'.$file.$temp.'P='.$pageCount.'">'.$lang['LASTPAGE'].'</a>';
			$nextPageNum = $page+1;
			$nextPageNum = $nextPageNum>$pageCount?$pageCount:$nextPageNum;
			$prePageNum = $page - 1;
			$prePageNum = $prePageNum<1?1:$prePageNum;
			$nextPage = $ajax?'<a href="#" onclick="'.$ajaxname.'('.$nextPageNum.','.$ajaxpar.')">'.$lang['NEXTPAGE'].'</a>':'<a href="'.$file.$temp.'P='.$nextPageNum.'">'.$lang['NEXTPAGE'].'</a>';
			$prePage = $ajax?'<a href="#" onclick="'.$ajaxname.'('.$prePageNum.','.$ajaxpar.')">'.$lang['PREPAGE'].'</a>':'<a href="'.$file.$temp.'P='.$prePageNum.'">'.$lang['PREPAGE'].'</a>';
			$str = $firstPage.'&nbsp'.($page==1?'':$prePage).'&nbsp'.$page.'&nbsp'.($page==$pageCount?'':$nextPage).'&nbsp'.$lastPage;
			break;
		default :
			$str='未定义的分页样式';
			break;
	}
	return $str;
}
/**
 * 得到指定的字符串所对应的日期区间，
 * 如给定：2008-1，则返回2008年1月的整个区间，
 * 如给定2008-1-1则返回2008年1月1日这个区间值，通过这个区间值可以查看指定天或月的贴子
 * 
 * @param $str string 给定的日期字符串，必须是合法的日期字符串，年月日中用"-"隔开
 * @return $mix 如果出错（包括给定的日期字符不正确）则返回0否则返回区间数组
 */
function getdatearea($str)
{
	if ($strtime=strtotime($str)) {
		$arrdate = explode('-',$str);
		$arrdate[1] = $arrdate[1]?$arrdate[1]:1;
		if (!empty($arrdate[1])&&!empty($arrdate[2])) {
			//$arrdate = $arrdate[1]==12?array($arrdate[0]+1,1,$arrdate[2])
			$start = $strtime;
			$stop = strtotime($str.' 23:59:59');
		}elseif (!empty($arrdate[1])&&empty($arrdate[2])){
			$arrdate[2] =1;
			$start = strtotime(implode('-',$arrdate));
			$arrdate=$arrdate[1]==12?array($arrdate[0]+1,1,1):array($arrdate[0],$arrdate[1]+1,1);
			$stop = strtotime(implode('-',$arrdate));
			$stop = $stop -1;
		}
	}
	if (isset($start)&&isset($stop)) {
		return array('start'=>$start,'stop'=>$stop);
	}else {
		return 0;
	}
}
/**
 * 用JS显示提示信息，显示完后跳到指定的页面，如果未指定页面则退到前一页面
 *
 * @param string $message 显示的内容
 * @param unknown_type $url 要跳到的页面地址
 */
function alert($message='', $url='') {
	// include '信息对应文件包';
	$message=str_replace("'","\'",$message);//加上字符串过虑，可以显示SQL语句，呵呵--SDM
	$message=str_replace("\"","\\\"",$message);
	echo $url ? "<script>alert('".$message."');window.location.href='".$url."';</script>" : "<script>alert('".$message."');history.go(-1);</script>";
	exit;
}
/**
 * 处理URL重写功能不需要服务器的支持。URL支持类拟：abc.php/id/2/cate/34
 *
 */
function  mod_rewrite(){
    $QueryString = !empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : str_replace($_SERVER["SCRIPT_NAME"], '', $_SERVER["REQUEST_URI"]);
    $QueryString = str_replace(array('"', "'", '<', '>'), array('%22', '%27', '%3C', '%3E'), $QueryString);
    if (strrpos($QueryString, "&") && strrpos($QueryString, "&")) { // 当URL为原始状态时
        $ParaArray = explode('&', $_SERVER["QUERY_STRING"]);
        for ($i=0; $i<count($ParaArray); $i++) {
            if (strpos($ParaArray[$i], '=')+1 != strlen($ParaArray[$i])) {
                $Para = explode('=', $ParaArray[$i]);
                 if (!empty($Para[1])) {
                    if (strpos($Para[0], '/')) $Para[0] = '{' . $Para[0] . '}';
                    if (strpos($Para[1], '/')) $Para[1] = '{' . $Para[1] . '}';
                    $RequestURL .= '/' . $Para[0] . '/' . $Para[1];
                 }
            }
        }
        $_SERVER["R_QUERY_STRING"] = $RequestURL;
    }
    elseif (strrpos($QueryString, "/")) { // 当URL为模拟 URL Rewrite 时
        $QueryString = str_replace('.html', '', $QueryString);
        $_SERVER["R_QUERY_STRING"] = $QueryString;
        preg_match_all ("/{(.*)}/U", $QueryString, $matches);
        for ($i=0; $i<count($matches[0]); $i++) {
            $QueryString = str_replace($matches[0][$i], rawurlencode($matches[1][$i]), $QueryString);
        }
        $ParaArray = explode('/', $QueryString);
        for ($i=0; $i<count($ParaArray); $i=$i+2) {
            if (!empty($ParaArray[$i+1])) {
                if (!empty($RequestURL)) $RequestURL .= '&';
                if (strpos($ParaArray[$i+1], '%2F')) $ParaArray[$i+1] = rawurldecode($ParaArray[$i+1]);
                if (strpos($ParaArray[$i+2], '%2F')) $ParaArray[$i+2] = rawurldecode($ParaArray[$i+2]);
                $StrArray[$ParaArray[$i+1]] = $ParaArray[$i+2];
                $RequestURL .= $ParaArray[$i+1] . "=" . $ParaArray[$i+2];
            }
        }
        $_GET = $StrArray;
        $_SERVER['QUERY_STRING'] = $RequestURL;
    }
    unset($QueryString, $ParaArray, $Para, $StrArray, $RequestURL, $matches, $i);
}
/**
 * 静态页面生成系统的一部分，供生成文件操作
 *
 * @param string $content 文件内容
 * @param string $path 相对路径（虑似目录下的目录，后面要有‘/’结束符）；
 * @param string $filename 文件名（与$path结合成最后写成的文件）
 * @param string $type 打开方式 可以不写默认为w 如果加上a则会不删除以前文件,而在现有文件里面增加
 * @return int 0操作成功
 */
function write_file($content,$path="./",$filename,$type="w")
{
	//服务器WEB页面的路径，如果WEB不在此路径的，需要更改
	$serpath=ROOT_PATH;
	//生成绝对路径
	$path=$serpath.$path;
	$filetowrite=$path.$filename;
	//if (!is_dir($path)) mkdir($path);
	$chkerror = check_path($path);
	if ($chkerror) {
		return $chkerror;
	}
	//空间不够
	if (strlen($content)>diskfreespace($path)) return '空间不够';
	//目录不可写
	if (!is_writeable($path)) return '目录不可写';
	
	if (strpos($type,'a')==false&&strpos($type,'a')!=0) {
		//对已有文件，作删除操作
		if (file_exists($path.$filename))
		{
			unlink($filetowrite);
		}
	}
	
	$fhand=fopen($filetowrite,$type);
	//新建的文件不可写//特殊情况，一般不会出现
	if (!is_writable ($filetowrite))	return '新建的文件不可写';
	//文件写入失败；
	if (!fwrite ($fhand,$content)) return '文件写入失败';
	fclose($fhand);
	clearstatcache();//清除快取内存中的文件信息
	return 0;//操作成功，反回0
}

/**
 * 检查文件函数,在定静态文件时需要调用此函数进行检查由于要多处用到它,所以写到公共函数内
 *
 * @param string $path 文件路径
 * @return 如果文件存在并可写,或目录存在或目录创建成功,则反回0,出错则返回错误信息

 */
function check_path($path)
{
	if (!is_dir($path)) {
		 $array_dir=explode("/",$path);//把多级目录分别放到数组中
		 for($i=0;$i<count($array_dir);$i++){
			  $pathmk .= $array_dir[$i]."/";
			  if(!file_exists($pathmk)){
			  	if (!mkdir($pathmk)) {
			  		die("创建文件夹失败：".$pathmk);
			  	}
			  }
		 }
	}else {
		if (!is_writeable($path)) {
			return '指定的目录不可写！';//指定的目录不可写
		}
	}
	return 0;
}
/**
 * 截取字符串函数。我写的放在公司，暂时使用BUGFREE的现成的,日后再换
 *
 * @param string $String
 * @param int $Length
 * @param bloon $Append
 * @return string
 */
function cutStr($String,$Length,$Append = false)  
{  
    if (strlen($String) <= $Length )  
    {
        return $String;
    }
    else
    {
        $I = 0;  
        while ($I < $Length)
        {
            $StringTMP = substr($String,$I,1);
            if ( ord($StringTMP) >=224 )
            {
                $StringTMP = substr($String,$I,3);
                $I = $I + 3;
            }
            elseif( ord($StringTMP) >=192 )
            {
                $StringTMP = substr($String,$I,2);
                $I = $I + 2;
            }
            else
            {
                $I = $I + 1;  
            }
            $StringLast[] = $StringTMP;  
        }
        $StringLast = implode("",$StringLast);  
        if($Append)  
        {
            $StringLast .= "...";  
        }
        return $StringLast;  
    }
}
/**
 * 检测是否是有效的用户名，如果是，返回TRUE否则返回FALSE；
 *
 * @param string $userName 要检测的用户名
 * @param int $start 最短长度，如果不限制则为0
 * @param int $len 最长长度
 * @return true/false 返回是或否
 */
function isUserName($userName,$start=0,$len=0)
{
	if ($start>0 && strlen($userName)<$start) {
		return false;
	}
	if ($len>0 && strlen($userName)>$len) {
		return false;
	}
	if (ereg('^[a-zA-Z@\-_0-9]+$',$userName)) {
		return true;
	}else {
		return false;
	}
}
/**
 * 判断是否是合法的密码，如果输入的密码二，则两个密码要一至
 *
 * @param string $passwd1 密码1
 * @param string $passwd2 密码2
 * @param int $start 最短长度
 * @param int $len 最长长度
 * @return true/false 返回合法性真或假
 */
function isPassword($passwd1,$passwd2='',$start=0,$len=0)
{
	if (!empty($passwd2)&&$passwd1!=$passwd2) {
		return false;
	}
	if ($start>0&&strlen($passwd1)<$start) {
		return false;
	}
	if ($len>0&&strlen($passwd1)>$len) {
		return false;
	}
}
/**
 * 判断邮件地址是否正确
 *
 * @param string $email 邮件地址
 * @return true/false 返回是或否
 */
function isEmail($email)
{
	if (!eregi("^[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9]+(\.[a-z0-9-]+)*$",$email)) {
		return false;
	}else {
		return true;
	}
}
/**
 * 把内容转换成HTML代码以便在页面正确的显示
 * 目前先只把回车转为<br>以后再加上其它的
 *
 * @param string $content 原内容
 * @param int $len 显示的长度，如果是0则显示全部，否则截取
 * @return string 转换后的内容
 */
function getHtmlContent($content,$len=0)
{
	$strHtml = nl2br($content);
	return $strHtml;
}
function toHtmlContent($content,$len)
{
	
}
/**
 * 权限检查，以此作统一的权限检，遇到需要检查权限的地方调用此函数
 *
 * @param string $method 要验证的操作
 * 
 * READ_ARTICLE:阅读文章，返回阅读文章的权限
 * NEW_ARTICLE:发表新文章
 * ADD_COMMENT:添加回复
 * 
 * @param array $userInfo 用户登录信息
 * @return int 0表示无此权限，其它一般返回1表示有限权，但有此特殊情况可能返回非1，如文章读取;未指定的暂定为有权限
 */
function checkRight($method,&$userInfo)
{
	$userInfo = islogin();
	if ($userInfo==0) {
		//未登录
		global $noLoginRight;
		$userRight = $noLoginRight;
	}else {
		$userRight = $userInfo[4];
	}
	switch ($method) {
		case 'READ_ARTICLE'://阅读文章，返回阅读文章的权限
			return substr($userRight,0,1);
			break;
		case 'NEW_ARTICLE'://发表新文章
			if (substr($userRight,1,1)!=2) {
				return 0;
			}else {
				return 1;
			}
			break;
		case 'ADD_COMMENT'://添加回复
			if (substr($userRight,1,1)<1) {
				return 0;
			}else {
				return 1;
			}
			break;
		default:
			return 1;
			break;
	}
	return 1;
}
/**
 * 判断是否为管理员登录，能过SESSION判断，前提是他要登录了
 * SESSION内容：uid：用户ID uname：用户登录名 logintime：登录时间（最后响应时间） key前三者与系统KEY的MD5 HASH值
 *
 * @return 0为不是管理员，如果已经作为管理员登录则返回1
 */
function isAdmin()
{
	global $secret_id,$logintimeout;
	$logininfo = islogin();
	if ($logininfo==0) {
		return -1;
	}
	session_start();
	$admin = $_SESSION['admininfo'];
	if (empty($admin)) {
		return 0;
	}
	$admininfo = explode('-',$admin);
	if (md5($admininfo[0].$admininfo[1].$admininfo[2].$secret_id)!=$admininfo[3]) {
		session_unregister('admininfo');
		return 0;
	}
	$now = time();
	if ($now - $admininfo[2]>$logintimeout) {
		session_unregister('admininfo');
		return 0;
	}
	$admininfo[2] = $now;
	$logkey = md5($admininfo[0].$admininfo[1].$admininfo[2].$secret_id);
	$admininfo[3] = $logkey;
	$_SESSION['admininfo'] = implode('-',$admininfo);
	return $logininfo;
}
/**
 * ajax刷新验证码
 *
 * @param string $id 验证码控制的ID
 * @param object $obj ajax对像
 */
function refreshAuthnum($id,$obj)
{
	global $virdir;
	if (class_exists('SWFFont')) {
		$obj->assign($id,'movie','noflash.swf');
		$obj->assign($id,'movie','/'.$virdir.'include/flvcode.php');
	}elseif(function_exists('imagecreate')){
		$obj->assign($id,'src','/'.$virdir.'include/imgcode.php?id=1');
	}
}
/**
 * 列出指定目录下的所有子目录
 *
 * @param string $dir 指定的目录
 * @return array 子目录数组
 */
function listDir($dir)
{
	$dirs = array();
	if ($handle = opendir($dir)) {
		while (false !==($file = readdir($handle)) ) {
			if ($file != "." && $file != ".." && is_dir($dir.$file)) {
				$dirs[] = $file;
			}
		}
	}
	return $dirs;
}

function loadConfig()
{
	global $cachepath;
	if (file_exists(ROOT_PATH.'./'.$cachepath.'config/webconfig.php')) {
		unlink(ROOT_PATH.'./'.$cachepath.'config/webconfig.php');
	}
	//读取配置参数
	//博客标题
	$settings['blogtitle'] = GP('blogtitle');
	//Blog 描述
	$settings['blogmemo'] = GP('blogmemo');
	//Blog 链接
	$settings['blogurl'] = GP('blogurl');
	//Blog Logo 图片
	$settings['bloglogo'] = GP('bloglogo');
	//站长名称:
	$settings['blogwebmaster'] = GP('blogwebmaster');
	//站长Email
	$settings['masteremail'] = GP('masteremail');
	//网站友情连接
	$settings['links'] = GP('links');
	//语言,默认为zh-cn
	$settings['bloglanguage'] = GP('bloglanguage');
	$settings['bloglanguage'] = empty($settings['bloglanguage'])?'zh-cn':$settings['bloglanguage'];
	//默认显示模式
	$settings['viewmodel'] = GP('viewmodel');
	$settings['viewmodel'] = empty($settings['viewmodel'])?'normal':$settings['viewmodel'];
	//每页日志数 普通/列表
	$settings['normalperpage'] = GP('normalperpage');
	$settings['listperpage'] = GP('listperpage');
	//每页评论数
	$settings['percomment'] = GP('percomment');
	//评论排序
	$settings['commentorder'] = GP('commentorder');
	//最新日志
	$settings['newblognum'] = GP('newblognum');
	//最新评论
	$settings['newcomment'] = GP('newcomment');
	//首页日志显示长度，超长自动截断
	$settings['indexbloglen'] = GP('indexbloglen');
	//开放注册
	$settings['enableregister'] = GP('enableregister');
	//使用校验码
	$settings['enablesecuritycode'] = GP('enablesecuritycode');
	//开放评论
	$settings['enablecomment'] = GP('enablecomment');
	//评论最大长度
	$settings['commentlen'] = GP('commentlen');
	//开放留言
	$settings['enableguestbook'] = GP('enableguestbook');
	//每页留言数
	$settings['guestbookperpage'] = GP('guestbookperpage');
	//网站样式选择
	$settings['style'] = GP('style');
	//防灌机制
	$settings['minposttime'] = GP('minposttime');
	//允许上传
	$settings['enableupload'] = GP('enableupload');
	//上传文件大小限制
	$settings['uploadsize'] = GP('uploadsize');
	//上传文件路径
	$settings['uploadpath'] = GP('uploadpath');
	//上传文件类型
	$settings['uploadtypes'] = GP('uploadtypes');
	//是否显示公告
	$settings['showannounce'] = GP('showannounce');
	
	
	$strConfig = '<?
	/**
	 * SDMblog 配置缓存文件  由程序自动生成请勿更改任何操作
	 * 需要更改配置信息的,请到网站后台更改,改完后清除缓存即可
	 *
	 */
	$cfg_blogtitle			="'.str_replace('"','\"',$settings['blogtitle']).'"			;//博客标题
	$cfg_blogmemo			="'.str_replace('"','\"',$settings['blogmemo']).'"			;//Blog 描述
	$cfg_blogurl			="'.str_replace('"','\"',$settings['blogurl']).'"				;//Blog 链接
	$cfg_bloglogo			="'.str_replace('"','\"',$settings['bloglogo']).'"			;//Blog Logo 图片
	$cfg_blogwebmaster		="'.str_replace('"','\"',$settings['blogwebmaster']).'"		;//站长名称
	$cfg_masteremail		="'.str_replace('"','\"',$settings['masteremail']).'"			;//站长Email
	$cfg_links				="'.str_replace('"','\"',$settings['links']).'"				;//网站友情连接
	$cfg_bloglanguage		="'.str_replace('"','\"',$settings['bloglanguage']).'"		;//语言
	$cfg_viewmodel			="'.str_replace('"','\"',$settings['viewmodel']).'"			;//默认显示模式
	$cfg_normalperpage		="'.str_replace('"','\"',$settings['normalperpage']).'"		;//每页日志数 普通
	$cfg_listperpage		="'.str_replace('"','\"',$settings['listperpage']).'"			;//每页日志数 列表
	$cfg_percomment			="'.str_replace('"','\"',$settings['percomment']).'"			;//每页评论数
	$cfg_commentorder		="'.str_replace('"','\"',$settings['commentorder']).'"		;//评论排序
	$cfg_newblognum			="'.str_replace('"','\"',$settings['newblognum']).'"			;//最新日志
	$cfg_newcomment			="'.str_replace('"','\"',$settings['newcomment']).'"			;//最新评论
	$cfg_indexbloglen		="'.str_replace('"','\"',$settings['indexbloglen']).'"		;//首页日志显示长度，超长自动截断
	$cfg_enableregister		="'.str_replace('"','\"',$settings['enableregister']).'"		;//开放注册
	$cfg_enablesecuritycode	="'.str_replace('"','\"',$settings['enablesecuritycode']).'"	;//使用校验码
	$cfg_enablecomment		="'.str_replace('"','\"',$settings['enablecomment']).'"		;//开放评论
	$cfg_commentlen			="'.str_replace('"','\"',$settings['commentlen']).'"			;//评论最大长度
	$cfg_enableguestbook	="'.str_replace('"','\"',$settings['enableguestbook']).'"		;//开放留言
	$cfg_guestbookperpage	="'.str_replace('"','\"',$settings['guestbookperpage']).'"	;//每页留言数
	$cfg_style				="'.str_replace('"','\"',$settings['style']).'"				;//网站样式选择
	$cfg_minposttime		="'.str_replace('"','\"',$settings['minposttime']).'"			;//防灌机制
	$cfg_enableupload		="'.str_replace('"','\"',$settings['enableupload']).'"		;//允许上传
	$cfg_uploadsize			="'.str_replace('"','\"',$settings['uploadsize']).'"			;//上传文件大小限制
	$cfg_uploadpath			="'.str_replace('"','\"',$settings['uploadpath']).'"			;//上传文件路径
	$cfg_uploadtypes		="'.str_replace('"','\"',$settings['uploadtypes']).'"			;//上传文件类型
	$showannounce			="'.str_replace('"','\"',$settings['showannounce']).'"		;//是否显示公告
	?>';
	$wres = write_file($strConfig,'./'.$cachepath.'config/','webconfig.php');
	if ($wres) {
		throw new Exception('配置文件写入失败,失败信息:'.$wres);
	}else{
		return 1;
	}
}
/**
 * 文章写静态页面
 *
 * @param unknown_type $articleid
 * @return unknown
 */
function makearticlecache($articleid)
{
	global $db,$tablepre;
	$sql='select a.id,a.title,a.content,a.adddate,a.editdate,a.author,a.edituser,a.submitip,a.comments,a.views,a.type,b.name as catename from '.$tablepre.'articles a,'.$tablepre.'categories b left join '.$tablepre.'users u on(u.name=a.author) left join '.$tablepre.'users uu on(uu.name=a.edituser) where b.id=a.category and a.id='.$articleid;
	$db->query($sql);
	$article = $db->db_fetch_array();
	$content_conf = '[article'.$article['id'].']
author = 
	
	';
	return $strHTML;
}
?>